﻿//Tên form : Danh sách nhóm người dùng
//Người thực hiện: Huypvt - Ngày tạo : 06-02-05
//Mô tả: - Liệt kê danh sách nhóm người dùng của hệ thống
//Mô tả chi tiết các chức năng :
//		-Thêm mới : Mở form thêm mới nhóm người dùng
//		-Sửa: Mở form sửa thông tin nhóm người dùng
//		-Xóa: Xóa nhóm người dùng khỏi hệ thống. Kiểm tra thông báo đến người dùng nếu còn tồn tại người dùng trong nhóm.
//Các yêu cầu ràng buộc : Mọi thông tin thay đổi phải thông báo đến người dùng,
//kiểm tra ràng buộc trước khi lưu vào cơ sở dữ liệu.
using System;
using System.Drawing;
using System.Collections;
using System.ComponentModel;
using System.Windows.Forms;
using Infragistics.Win.Misc;
using QLNHK.QUANTRIHETHONG;
using QLNHK.BLL;
using Infragistics.Win.UltraWinGrid;
using Infragistics.Win.UltraWinEditors;
using System.Data;
using QLNHK.Controls;

namespace QLNHK.QUANTRIHETHONG
{
    /// <summary>
    /// Summary description for FrmDanhSachNhomNguoiDung.
    /// </summary>
    public class FrmDanhSachNhomNguoiDung : FrmBase
    {
        #region Variable Members

        private Infragistics.Win.Misc.UltraButton btnThemMoi;
        private Infragistics.Win.Misc.UltraButton btnSua;
        private Infragistics.Win.Misc.UltraButton btnXoa;
        private Infragistics.Win.Misc.UltraButton btnDong;
        private Infragistics.Win.UltraWinGrid.UltraGrid UGMain;
        /// <summary>
        /// DataSet lưu Danh sách nhóm người dùng
        /// </summary>
        private System.Data.DataSet dsNhomNguoiDung;
        private System.Data.DataColumn dataColumn1;
        private System.Data.DataColumn dataColumn2;
        private System.Data.DataColumn dataColumn3;
        private System.ComponentModel.IContainer components;
        /// <summary>
        /// DataTable lưu Danh sách nhóm người dùng
        /// </summary>
        private System.Data.DataTable dtNhomNguoiDung;
        private System.Windows.Forms.ImageList imgGrid;
        private UltraGroupBox ultraGroupBox1;
        /// <summary>
        /// Lưu đầu đề FORM
        /// </summary>
        private string _caption;
        #endregion //Variable Members

        #region Constructor
        public FrmDanhSachNhomNguoiDung()
        {
            InitializeComponent();
        }

        #endregion //Constructor

        #region Dispose
        /// <summary>
        /// Clean up any resources being used.
        /// </summary>
        protected override void Dispose(bool disposing)
        {
            if (disposing)
            {
                if (components != null)
                {
                    components.Dispose();
                }
            }
            base.Dispose(disposing);
        }

        #endregion //Dispose

        #region Windows Form Designer generated code
        /// <summary>
        /// Required method for Designer support - do not modify
        /// the contents of this method with the code editor.
        /// </summary>
        private void InitializeComponent()
        {
            this.components = new System.ComponentModel.Container();
            System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(FrmDanhSachNhomNguoiDung));
            Infragistics.Win.Appearance appearance1 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance2 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance3 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance4 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance6 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance7 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance8 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance9 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance10 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance11 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance12 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance13 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance14 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance15 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance16 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance17 = new Infragistics.Win.Appearance();
            Infragistics.Win.Appearance appearance18 = new Infragistics.Win.Appearance();
            this.btnThemMoi = new Infragistics.Win.Misc.UltraButton();
            this.btnSua = new Infragistics.Win.Misc.UltraButton();
            this.btnXoa = new Infragistics.Win.Misc.UltraButton();
            this.btnDong = new Infragistics.Win.Misc.UltraButton();
            this.UGMain = new Infragistics.Win.UltraWinGrid.UltraGrid();
            this.dsNhomNguoiDung = new System.Data.DataSet();
            this.dtNhomNguoiDung = new System.Data.DataTable();
            this.dataColumn1 = new System.Data.DataColumn();
            this.dataColumn2 = new System.Data.DataColumn();
            this.dataColumn3 = new System.Data.DataColumn();
            this.imgGrid = new System.Windows.Forms.ImageList(this.components);
            this.ultraGroupBox1 = new Infragistics.Win.Misc.UltraGroupBox();
            ((System.ComponentModel.ISupportInitialize)(this.UGMain)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.dsNhomNguoiDung)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.dtNhomNguoiDung)).BeginInit();
            ((System.ComponentModel.ISupportInitialize)(this.ultraGroupBox1)).BeginInit();
            this.ultraGroupBox1.SuspendLayout();
            this.SuspendLayout();
            // 
            // imgList
            // 
            this.imgList.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgList.ImageStream")));
            this.imgList.Images.SetKeyName(0, "");
            this.imgList.Images.SetKeyName(1, "");
            this.imgList.Images.SetKeyName(2, "");
            this.imgList.Images.SetKeyName(3, "");
            this.imgList.Images.SetKeyName(4, "");
            this.imgList.Images.SetKeyName(5, "");
            this.imgList.Images.SetKeyName(6, "");
            this.imgList.Images.SetKeyName(7, "");
            this.imgList.Images.SetKeyName(8, "");
            this.imgList.Images.SetKeyName(9, "");
            this.imgList.Images.SetKeyName(10, "");
            this.imgList.Images.SetKeyName(11, "");
            this.imgList.Images.SetKeyName(12, "");
            this.imgList.Images.SetKeyName(13, "");
            this.imgList.Images.SetKeyName(14, "");
            this.imgList.Images.SetKeyName(15, "");
            this.imgList.Images.SetKeyName(16, "");
            this.imgList.Images.SetKeyName(17, "");
            this.imgList.Images.SetKeyName(18, "");
            this.imgList.Images.SetKeyName(19, "");
            this.imgList.Images.SetKeyName(20, "");
            this.imgList.Images.SetKeyName(21, "");
            this.imgList.Images.SetKeyName(22, "");
            this.imgList.Images.SetKeyName(23, "");
            this.imgList.Images.SetKeyName(24, "enable_server.ico");
            this.imgList.Images.SetKeyName(25, "User.ico");
            this.imgList.Images.SetKeyName(26, "doc-file.ico");
            this.imgList.Images.SetKeyName(27, "xls-file.ico");
            this.imgList.Images.SetKeyName(28, "lock.ico");
            // 
            // btnThemMoi
            // 
            this.btnThemMoi.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            appearance1.Image = ((object)(resources.GetObject("appearance1.Image")));
            this.btnThemMoi.Appearance = appearance1;
            this.btnThemMoi.BackColorInternal = System.Drawing.SystemColors.Control;
            this.btnThemMoi.DialogResult = System.Windows.Forms.DialogResult.OK;
            this.btnThemMoi.Location = new System.Drawing.Point(500, 424);
            this.btnThemMoi.Name = "btnThemMoi";
            this.btnThemMoi.Size = new System.Drawing.Size(107, 24);
            this.btnThemMoi.TabIndex = 0;
            this.btnThemMoi.Text = "&Thêm mới";
            this.btnThemMoi.Click += new System.EventHandler(this.BtnEvent_Click);
            // 
            // btnSua
            // 
            this.btnSua.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            appearance2.Image = ((object)(resources.GetObject("appearance2.Image")));
            this.btnSua.Appearance = appearance2;
            this.btnSua.BackColorInternal = System.Drawing.SystemColors.Control;
            this.btnSua.Location = new System.Drawing.Point(612, 424);
            this.btnSua.Name = "btnSua";
            this.btnSua.Size = new System.Drawing.Size(94, 24);
            this.btnSua.TabIndex = 0;
            this.btnSua.Text = "&Sửa";
            this.btnSua.Click += new System.EventHandler(this.BtnEvent_Click);
            // 
            // btnXoa
            // 
            this.btnXoa.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            appearance3.Image = ((object)(resources.GetObject("appearance3.Image")));
            this.btnXoa.Appearance = appearance3;
            this.btnXoa.BackColorInternal = System.Drawing.SystemColors.Control;
            this.btnXoa.Location = new System.Drawing.Point(711, 424);
            this.btnXoa.Name = "btnXoa";
            this.btnXoa.Size = new System.Drawing.Size(85, 24);
            this.btnXoa.TabIndex = 0;
            this.btnXoa.Text = "&Xóa";
            this.btnXoa.Click += new System.EventHandler(this.BtnEvent_Click);
            // 
            // btnDong
            // 
            this.btnDong.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
            appearance4.Image = ((object)(resources.GetObject("appearance4.Image")));
            this.btnDong.Appearance = appearance4;
            this.btnDong.BackColorInternal = System.Drawing.SystemColors.Control;
            this.btnDong.DialogResult = System.Windows.Forms.DialogResult.Cancel;
            this.btnDong.Location = new System.Drawing.Point(800, 424);
            this.btnDong.Name = "btnDong";
            this.btnDong.Size = new System.Drawing.Size(87, 24);
            this.btnDong.TabIndex = 0;
            this.btnDong.Text = "Đó&ng";
            this.btnDong.Click += new System.EventHandler(this.BtnEvent_Click);
            // 
            // UGMain
            // 
            this.UGMain.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            appearance6.BackColor = System.Drawing.SystemColors.Window;
            appearance6.BorderColor = System.Drawing.SystemColors.InactiveCaption;
            this.UGMain.DisplayLayout.Appearance = appearance6;
            this.UGMain.DisplayLayout.AutoFitStyle = Infragistics.Win.UltraWinGrid.AutoFitStyle.ResizeAllColumns;
            this.UGMain.DisplayLayout.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid;
            appearance7.FontData.BoldAsString = "True";
            this.UGMain.DisplayLayout.CaptionAppearance = appearance7;
            this.UGMain.DisplayLayout.CaptionVisible = Infragistics.Win.DefaultableBoolean.True;
            this.UGMain.DisplayLayout.ColumnChooserEnabled = Infragistics.Win.DefaultableBoolean.False;
            appearance8.BackColor = System.Drawing.SystemColors.ActiveBorder;
            appearance8.BackColor2 = System.Drawing.SystemColors.ControlDark;
            appearance8.BackGradientStyle = Infragistics.Win.GradientStyle.Vertical;
            appearance8.BorderColor = System.Drawing.SystemColors.Window;
            appearance8.FontData.BoldAsString = "True";
            this.UGMain.DisplayLayout.GroupByBox.Appearance = appearance8;
            appearance9.FontData.BoldAsString = "True";
            appearance9.ForeColor = System.Drawing.SystemColors.GrayText;
            this.UGMain.DisplayLayout.GroupByBox.BandLabelAppearance = appearance9;
            this.UGMain.DisplayLayout.GroupByBox.BorderStyle = Infragistics.Win.UIElementBorderStyle.Solid;
            this.UGMain.DisplayLayout.GroupByBox.Hidden = true;
            appearance10.BackColor = System.Drawing.SystemColors.ControlLightLight;
            appearance10.BackColor2 = System.Drawing.SystemColors.Control;
            appearance10.BackGradientStyle = Infragistics.Win.GradientStyle.Horizontal;
            appearance10.ForeColor = System.Drawing.SystemColors.GrayText;
            this.UGMain.DisplayLayout.GroupByBox.PromptAppearance = appearance10;
            this.UGMain.DisplayLayout.MaxColScrollRegions = 1;
            this.UGMain.DisplayLayout.MaxRowScrollRegions = 1;
            appearance11.BackColor = System.Drawing.SystemColors.Window;
            appearance11.ForeColor = System.Drawing.SystemColors.ControlText;
            this.UGMain.DisplayLayout.Override.ActiveCellAppearance = appearance11;
            appearance12.BackColor = System.Drawing.SystemColors.Highlight;
            appearance12.ForeColor = System.Drawing.SystemColors.HighlightText;
            this.UGMain.DisplayLayout.Override.ActiveRowAppearance = appearance12;
            this.UGMain.DisplayLayout.Override.BorderStyleCell = Infragistics.Win.UIElementBorderStyle.Dotted;
            this.UGMain.DisplayLayout.Override.BorderStyleRow = Infragistics.Win.UIElementBorderStyle.Dotted;
            appearance13.BackColor = System.Drawing.SystemColors.Window;
            this.UGMain.DisplayLayout.Override.CardAreaAppearance = appearance13;
            appearance14.BorderColor = System.Drawing.Color.Silver;
            appearance14.TextTrimming = Infragistics.Win.TextTrimming.EllipsisCharacter;
            this.UGMain.DisplayLayout.Override.CellAppearance = appearance14;
            this.UGMain.DisplayLayout.Override.CellClickAction = Infragistics.Win.UltraWinGrid.CellClickAction.EditAndSelectText;
            this.UGMain.DisplayLayout.Override.CellPadding = 0;
            appearance15.BackColor = System.Drawing.SystemColors.Control;
            appearance15.BackColor2 = System.Drawing.SystemColors.ControlDark;
            appearance15.BackGradientAlignment = Infragistics.Win.GradientAlignment.Element;
            appearance15.BackGradientStyle = Infragistics.Win.GradientStyle.Horizontal;
            appearance15.BorderColor = System.Drawing.SystemColors.Window;
            this.UGMain.DisplayLayout.Override.GroupByRowAppearance = appearance15;
            appearance16.TextHAlignAsString = "Left";
            this.UGMain.DisplayLayout.Override.HeaderAppearance = appearance16;
            this.UGMain.DisplayLayout.Override.HeaderClickAction = Infragistics.Win.UltraWinGrid.HeaderClickAction.SortMulti;
            this.UGMain.DisplayLayout.Override.HeaderStyle = Infragistics.Win.HeaderStyle.WindowsXPCommand;
            appearance17.BackColor = System.Drawing.SystemColors.Window;
            appearance17.BorderColor = System.Drawing.Color.Silver;
            this.UGMain.DisplayLayout.Override.RowAppearance = appearance17;
            this.UGMain.DisplayLayout.Override.RowSelectorHeaderStyle = Infragistics.Win.UltraWinGrid.RowSelectorHeaderStyle.SeparateElement;
            this.UGMain.DisplayLayout.Override.RowSelectorNumberStyle = Infragistics.Win.UltraWinGrid.RowSelectorNumberStyle.VisibleIndex;
            this.UGMain.DisplayLayout.Override.RowSelectors = Infragistics.Win.DefaultableBoolean.True;
            appearance18.BackColor = System.Drawing.SystemColors.ControlLight;
            this.UGMain.DisplayLayout.Override.TemplateAddRowAppearance = appearance18;
            this.UGMain.DisplayLayout.ScrollBounds = Infragistics.Win.UltraWinGrid.ScrollBounds.ScrollToFill;
            this.UGMain.DisplayLayout.ScrollStyle = Infragistics.Win.UltraWinGrid.ScrollStyle.Immediate;
            this.UGMain.DisplayLayout.ViewStyleBand = Infragistics.Win.UltraWinGrid.ViewStyleBand.OutlookGroupBy;
            this.UGMain.Font = new System.Drawing.Font("Tahoma", 8.25F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(163)));
            this.UGMain.Location = new System.Drawing.Point(19, 18);
            this.UGMain.Name = "UGMain";
            this.UGMain.Size = new System.Drawing.Size(868, 397);
            this.UGMain.TabIndex = 4;
            this.UGMain.InitializeLayout += new Infragistics.Win.UltraWinGrid.InitializeLayoutEventHandler(this.UGMain_InitializeLayout);
            this.UGMain.AfterSelectChange += new Infragistics.Win.UltraWinGrid.AfterSelectChangeEventHandler(this.UGMain_AfterSelectChange);
            this.UGMain.BeforeRowsDeleted += new Infragistics.Win.UltraWinGrid.BeforeRowsDeletedEventHandler(this.UGMain_BeforeRowsDeleted);
            this.UGMain.DoubleClickRow += new Infragistics.Win.UltraWinGrid.DoubleClickRowEventHandler(this.UGMain_DoubleClickRow);
            // 
            // dsNhomNguoiDung
            // 
            this.dsNhomNguoiDung.DataSetName = "NewDataSet";
            this.dsNhomNguoiDung.Locale = new System.Globalization.CultureInfo("en-US");
            this.dsNhomNguoiDung.Tables.AddRange(new System.Data.DataTable[] {
            this.dtNhomNguoiDung});
            // 
            // dtNhomNguoiDung
            // 
            this.dtNhomNguoiDung.Columns.AddRange(new System.Data.DataColumn[] {
            this.dataColumn1,
            this.dataColumn2,
            this.dataColumn3});
            this.dtNhomNguoiDung.TableName = "tb_NHOM_NGUOIDUNG";
            // 
            // dataColumn1
            // 
            this.dataColumn1.Caption = "ID_Nhom_NguoiDung";
            this.dataColumn1.ColumnName = "ID_Nhom_NguoiDung";
            this.dataColumn1.DataType = typeof(int);
            // 
            // dataColumn2
            // 
            this.dataColumn2.Caption = "Tên nhóm";
            this.dataColumn2.ColumnName = "Ten";
            // 
            // dataColumn3
            // 
            this.dataColumn3.Caption = "Mô tả";
            this.dataColumn3.ColumnName = "Mota";
            // 
            // imgGrid
            // 
            this.imgGrid.ImageStream = ((System.Windows.Forms.ImageListStreamer)(resources.GetObject("imgGrid.ImageStream")));
            this.imgGrid.TransparentColor = System.Drawing.Color.Transparent;
            this.imgGrid.Images.SetKeyName(0, "user.ico");
            this.imgGrid.Images.SetKeyName(1, "users.ico");
            // 
            // ultraGroupBox1
            // 
            this.ultraGroupBox1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) 
            | System.Windows.Forms.AnchorStyles.Left) 
            | System.Windows.Forms.AnchorStyles.Right)));
            this.ultraGroupBox1.Controls.Add(this.UGMain);
            this.ultraGroupBox1.Controls.Add(this.btnThemMoi);
            this.ultraGroupBox1.Controls.Add(this.btnDong);
            this.ultraGroupBox1.Controls.Add(this.btnSua);
            this.ultraGroupBox1.Controls.Add(this.btnXoa);
            this.ultraGroupBox1.Location = new System.Drawing.Point(-7, -6);
            this.ultraGroupBox1.Name = "ultraGroupBox1";
            this.ultraGroupBox1.Size = new System.Drawing.Size(906, 465);
            this.ultraGroupBox1.TabIndex = 5;
            this.ultraGroupBox1.ViewStyle = Infragistics.Win.Misc.GroupBoxViewStyle.Office2007;
            // 
            // FrmDanhSachNhomNguoiDung
            // 
            this.AcceptButton = this.btnSua;
            this.AutoScaleBaseSize = new System.Drawing.Size(5, 14);
            this.BackColor = System.Drawing.Color.White;
            this.CancelButton = this.btnDong;
            this.ClientSize = new System.Drawing.Size(892, 451);
            this.Controls.Add(this.ultraGroupBox1);
            this.Name = "FrmDanhSachNhomNguoiDung";
            this.Text = "Danh sách nhóm người dùng";
            this.Load += new System.EventHandler(this.FrmDanhSachNhomNguoiDung_Load);
            ((System.ComponentModel.ISupportInitialize)(this.UGMain)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.dsNhomNguoiDung)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.dtNhomNguoiDung)).EndInit();
            ((System.ComponentModel.ISupportInitialize)(this.ultraGroupBox1)).EndInit();
            this.ultraGroupBox1.ResumeLayout(false);
            this.ResumeLayout(false);

        }
        #endregion

        #region Form Events
        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Handles the Click event of the BtnEvent control.
        /// </summary>
        /// <param name="sender">Đối tượng của hàm.</param>
        /// <param name="e">Sự kiện khởi tạo cho  .</param>
        private void BtnEvent_Click(object sender, System.EventArgs e)
        {
            try
            {
                UltraButton btn = (UltraButton)(sender);
                switch (btn.Name)
                {
                    case "btnThemMoi":
                        try
                        {
                            FrmTaoNhomNguoiDung frmTaoNhomDialog = new FrmTaoNhomNguoiDung(1);
                            if (frmTaoNhomDialog.ShowDialog() == DialogResult.OK)
                            {
                                dsNhomNguoiDung = this.loadData();
                                UGMain.DataSource = dsNhomNguoiDung.Tables[0];
                                UGMain.DataBind();
                                this.setStateButton(UGMain.Rows.Count != 0);
                                //Thiết lập index đến nhóm mới tạo
                                this.UGMain.ActiveRow = this.UGMain.Rows[this.UGMain.Rows.Count - 1];
                                this.UGMain.ActiveRow.Selected = true;
                                this.setChanged(false);
                            }
                        }
                        catch { }
                        break;

                    case "btnSua":
                        this.suaNhom();
                        break;

                    case "btnXoa":
                        this.deleteNhom();
                        break;

                    case "btnDong":
                        this.Close();
                        break;
                }
            }
            catch (Exception ex) { throw ex; }
        }
        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Hiển thị form chỉnh sửa nhóm khi double-click
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UGMain_DoubleClickRow(object sender, Infragistics.Win.UltraWinGrid.DoubleClickRowEventArgs e)
        {
            if (this.UGMain.ActiveRow.IsActiveRow)
                this.suaNhom();
        }
        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Form Load: Liệt kê danh sách nhóm hiện tại có trong hệ thống.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void FrmDanhSachNhomNguoiDung_Load(object sender, System.EventArgs e)
        {
            try
            {
                this._caption = this.Text;
                //Lấy danh sách nhóm                
                dsNhomNguoiDung = this.loadData();
                if (dsNhomNguoiDung.Tables[0].Rows.Count != 0)
                {
                    UGMain.DataSource = dsNhomNguoiDung.Tables[0];
                    UGMain.DataBind();
                }
                else
                {
                    UGMain.CreationFilter = new EmptyGridCreationFilter("Không tồn tại nhóm người dùng trong hệ thống.");
                }

                this.setStateButton(UGMain.Rows.Count != 0);
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:		
        /// <summary>
        /// Handles the InitializeLayout event of the UGMain control.
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UGMain_InitializeLayout(object sender, Infragistics.Win.UltraWinGrid.InitializeLayoutEventArgs e)
        {
            try
            {
                //   Let's only allow single-selection of rows
                e.Layout.Override.SelectTypeRow = SelectType.Single;
                UltraGridControls.SetGridStyle(UGMain, AutoFitStyle.ResizeAllColumns, CellClickAction.RowSelect);
                //Set Caption
                e.Layout.Bands[0].Columns["ID_Nhom_NguoiDung"].Hidden = true;
                e.Layout.Bands[0].Columns["Ten"].Header.Caption = "Tên nhóm";
                e.Layout.Bands[0].Columns["Ten"].CellAppearance.Image = imgGrid.Images[1];
                e.Layout.Bands[0].Columns["Mota"].Header.Caption = "Mô tả";
                e.Layout.Bands[0].Columns["IsAdminGroup"].Hidden = true;
                //Không cho phép cập nhật các Field
                e.Layout.Bands[0].Columns["ID_Nhom_NguoiDung"].CellActivation = Activation.NoEdit;
                e.Layout.Bands[0].Columns["Ten"].CellActivation = Activation.NoEdit;
                e.Layout.Bands[0].Columns["Mota"].CellActivation = Activation.NoEdit;
            }
            catch { }
        }
        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:		
        /// <summary>
        /// Sự kiện khi chuyển Focus trên bản ghi
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UGMain_AfterSelectChange(object sender, Infragistics.Win.UltraWinGrid.AfterSelectChangeEventArgs e)
        {

            this.setStateButton(UGMain.ActiveRow.IsActiveRow);
        }

        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Kiểm tra có phải là nhóm Admin?
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void UGMain_BeforeRowsDeleted(object sender, Infragistics.Win.UltraWinGrid.BeforeRowsDeletedEventArgs e)
        {
            try
            {
                //Kiểm tra nhóm có phải nhóm Admin
                if (Convert.ToBoolean(UGMain.ActiveRow.Cells["IsAdminGroup"].Value))
                {
                    MessageBox.Show(QLNHK.BLL.ThongBao.MSG_Warning_FrmDanhSachNomNguoiDung_NhomIsAdminGroup, QLNHK.BLL.ThongBao.MSG_Caption_Warning, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    e.Cancel = true;
                }
                else
                {
                    int inddex = UGMain.ActiveRow.VisibleIndex;//Lấy index nhóm được chọn để xóa
                    //Lấy ID nhóm người dùng được chọn trong lưới
                    int idNhomNguoiDung = Convert.ToInt32(UGMain.ActiveRow.Cells["ID_Nhom_NguoiDung"].Value);
                    //Kiểm tra trong nhóm có người dùng không?
                    if (this.checkHaveNguoiDungInNhomNguoiDung(idNhomNguoiDung))
                    {
                        MessageBox.Show(string.Format(QLNHK.BLL.ThongBao.MSG_Warning_FrmDanhSachNomNguoiDung_NhomNguoiDungIsExistsNguoiDung, UGMain.ActiveRow.Cells["Ten"].Value.ToString())
                            , QLNHK.BLL.ThongBao.MSG_Caption_Warning, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        e.Cancel = true;
                    }
                    else
                    {
                        if (MessageBox.Show(string.Format(QLNHK.BLL.ThongBao.MSG_Warning_FrmTaoNhomNguoiDung_XoaNhom, UGMain.ActiveRow.Cells["Ten"].Value.ToString()), QLNHK.BLL.ThongBao.MSG_Caption,
                            MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            //Xóa thông tin các chức năng phân cho nhóm trước
                            Cls_PHANQUYEN_NHOM objPhanQuyenNhom = new Cls_PHANQUYEN_NHOM();
                            foreach (DataRow dr in objPhanQuyenNhom.ListByIDNhom(idNhomNguoiDung).Tables[0].Rows)
                            {
                                objPhanQuyenNhom.Delete(Convert.ToInt32(dr["ID_PhanQuyen_Nhom"]));
                            }
                            //Gọi phương thức xóa thông tin nhóm
                            if (this.deleteNhom(idNhomNguoiDung) != -1)
                            {
                                //Load lại dữ liệu
                                dsNhomNguoiDung = this.loadData();
                                UGMain.DataSource = dsNhomNguoiDung.Tables[0];
                                UGMain.DataBind();
                                this.setStateButton(UGMain.Rows.Count != 0);
                                //Thiết lập index đến nhóm trên nhóm đã xóa
                                if (inddex - 1 > 0) //Kiểm tra index có nhỏ hơn index nhóm đầu tiên?
                                {
                                    this.UGMain.ActiveRow = this.UGMain.Rows[inddex - 1];
                                    this.UGMain.ActiveRow.Selected = true;
                                }
                            }
                            //Lỗi xóa nhóm
                            else
                                MessageBox.Show(QLNHK.BLL.ThongBao.MSG_Warning_FrmTaoNhomNguoiDung_LoiXoaNhom, QLNHK.BLL.ThongBao.MSG_Caption_Error,
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                        //Không đồng ý xóa
                        else
                        {
                            e.Cancel = true;
                        }
                    }
                }
                e.Cancel = true;
            }
            catch (Exception ex) { throw ex; }
        }
        #endregion //Form Events

        #region Private Methods
        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:		
        /// <summary>
        /// Sửa thông tin nhóm người dùng.
        /// </summary>
        private void suaNhom()
        {
            try
            {
                int index = UGMain.ActiveRow.VisibleIndex;//Lấy index nhóm được sửa
                FrmTaoNhomNguoiDung frmChinhSuaNhomDialog = new FrmTaoNhomNguoiDung(0);
                frmChinhSuaNhomDialog.IDNhomNguoiDung = Convert.ToInt32(UGMain.ActiveRow.Cells["ID_Nhom_NguoiDung"].Value);
                frmChinhSuaNhomDialog.TenNhom = UGMain.ActiveRow.Cells["Ten"].Value.ToString();
                frmChinhSuaNhomDialog.Mota = UGMain.ActiveRow.Cells["Mota"].Value.ToString();
                if (frmChinhSuaNhomDialog.ShowDialog() == DialogResult.OK)
                {
                    dsNhomNguoiDung = this.loadData();
                    UGMain.DataSource = dsNhomNguoiDung.Tables[0];
                    UGMain.DataBind();
                    //Thiết lập index cho nhóm được sửa
                    UGMain.ActiveRow = UGMain.Rows[index];
                    UGMain.ActiveRow.Selected = true;
                    this.setStateButton(UGMain.Rows.Count != 0);
                    this.setChanged(false);
                }
            }
            catch (Exception ex) { throw ex; }
        }

        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:		
        /// <summary>
        /// Xóa thông tin nhóm người dùng.
        /// </summary>
        private void deleteNhom()
        {
            try
            {
                if (Convert.ToBoolean(UGMain.ActiveRow.Cells["IsAdminGroup"].Value))
                {
                    MessageBox.Show(QLNHK.BLL.ThongBao.MSG_Warning_FrmDanhSachNomNguoiDung_NhomIsAdminGroup, QLNHK.BLL.ThongBao.MSG_Caption_Warning, MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }
                else
                {
                    int inddex = UGMain.ActiveRow.VisibleIndex;//Lấy index nhóm được chọn
                    //Lấy ID nhóm người dùng được chọn trong lưới
                    int idNhomNguoiDung = Convert.ToInt32(UGMain.ActiveRow.Cells["ID_Nhom_NguoiDung"].Value);
                    //Kiểm tra trong nhóm có người dùng không?
                    if (this.checkHaveNguoiDungInNhomNguoiDung(idNhomNguoiDung))
                    {
                        MessageBox.Show(string.Format(QLNHK.BLL.ThongBao.MSG_Warning_FrmDanhSachNomNguoiDung_NhomNguoiDungIsExistsNguoiDung, UGMain.ActiveRow.Cells["Ten"].Value.ToString())
                            , QLNHK.BLL.ThongBao.MSG_Caption_Warning, MessageBoxButtons.OK, MessageBoxIcon.Information);
                        return;
                    }
                    else
                    {
                        if (MessageBox.Show(string.Format(QLNHK.BLL.ThongBao.MSG_Warning_FrmTaoNhomNguoiDung_XoaNhom, UGMain.ActiveRow.Cells["Ten"].Value.ToString()), QLNHK.BLL.ThongBao.MSG_Caption,
                            MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
                        {
                            //Xóa thông tin các chức năng phân cho nhóm trước
                            Cls_PHANQUYEN_NHOM objPhanQuyenNhom = new Cls_PHANQUYEN_NHOM();
                            foreach (DataRow dr in objPhanQuyenNhom.ListByIDNhom(idNhomNguoiDung).Tables[0].Rows)
                            {
                                objPhanQuyenNhom.Delete(Convert.ToInt32(dr["ID_PhanQuyen_Nhom"]));
                            }
                            //Gọi phương thức xóa thông tin nhóm
                            if (this.deleteNhom(idNhomNguoiDung) != -1)
                            {
                                //Load lại dữ liệu
                                dsNhomNguoiDung = this.loadData();
                                UGMain.DataSource = dsNhomNguoiDung.Tables[0];
                                UGMain.DataBind();
                                this.setStateButton(UGMain.Rows.Count != 0);
                                //Thiết lập index đến nhóm trên nhóm đã xóa
                                if (inddex - 1 > 0) //Kiểm tra index có nhỏ hơn index nhóm đầu tiên?
                                {
                                    this.UGMain.ActiveRow = this.UGMain.Rows[inddex - 1];
                                    this.UGMain.ActiveRow.Selected = true;
                                }
                            }
                            else
                                MessageBox.Show(QLNHK.BLL.ThongBao.MSG_Warning_FrmTaoNhomNguoiDung_LoiXoaNhom, this.Text,
                                    MessageBoxButtons.OK, MessageBoxIcon.Information);
                        }
                    }
                }
            }
            catch
            {
                MessageBox.Show(QLNHK.BLL.ThongBao.MSG_Error_DatabaseAll_NoArgs, QLNHK.BLL.ThongBao.MSG_Caption_Error, MessageBoxButtons.OK,
                    MessageBoxIcon.Information);
            }
        }
        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:		
        /// <summary>
        /// Xóa thông tin nhóm người dùng., Lỗi trả về -1
        /// </summary>
        /// <param name="pIDNhomNguoiDung">Id nhóm người dùng cần xóa</param>
        /// <returns>int</returns>
        private int deleteNhom(int pIDNhomNguoiDung)
        {
            int isValid = -1;

            try
            {
                // Tạo instance của lớp Cls_NHOM_NGUOIDUNG
                Cls_NHOM_NGUOIDUNG objNhomNguoiDung = new Cls_NHOM_NGUOIDUNG();
                //Gọi phương thức xóa thông tin nhóm
                isValid = objNhomNguoiDung.DoDelete(pIDNhomNguoiDung);
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return isValid;
        }

        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Kiểm tra có người dùng trong nhóm không?, True: Tồn tại người dùng trong nhóm
        /// </summary>
        /// <param name="pIDNhomNguoiDung">Id nhóm người dùng</param>
        /// <returns>Boolean</returns>
        private bool checkHaveNguoiDungInNhomNguoiDung(int pIDNhomNguoiDung)
        {
            bool isValid = false; // Mặc định gán không có người dùng trong nhóm

            try
            {
                // Tạo instance của lớp Cls_NHOM_NGUOIDUNG
                Cls_NHOM_NGUOIDUNG objNhomNguoiDung = new Cls_NHOM_NGUOIDUNG();
                // Gọi phương thức
                if (objNhomNguoiDung.ListUserByIDNhomNguoiDung(pIDNhomNguoiDung) != null &&
                    objNhomNguoiDung.ListUserByIDNhomNguoiDung(pIDNhomNguoiDung).Tables[0].Rows.Count != 0)
                    isValid = true;
            }
            catch (Exception ex)
            {
                throw ex;
            }

            return isValid;
        }

        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Lấy thông tin danh sách nhóm người dùng từ CSDL.
        /// </summary>
        /// <returns>DataSet</returns>
        private DataSet loadData()
        {
            try
            {
                // Tạo instance của lớp Cls_NHOM_NGUOIDUNG
                Cls_NHOM_NGUOIDUNG objNhomNguoiDung = new Cls_NHOM_NGUOIDUNG();
                //Lấy danh sách nhóm
                return objNhomNguoiDung.ListByAll();
            }
            catch
            {
                return null;
            }
        }

        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Thiết lập trạng thái của Button
        /// </summary>
        /// <param name="flag">Boolean</param>
        private void setStateButton(bool flag)
        {
            // Thiết lập trạng thái ban đầu của Button
            this.btnXoa.Enabled = flag;
            this.btnSua.Enabled = flag;
        }
        // Author: Hungtq . Date: 2/9/2006.
        // Modifier: Hungtq. Date:  2/9/2006.
        // Liệt kê những gì đã chỉnh sửa:
        /// <summary>
        /// Thiết lập trạng thái thay đổi đầu đề của FORM khi có thay đổi
        /// </summary>
        /// <param name="isChanged">Trạng thái FORM (True: Có thay đổi)</param>
        private void setChanged(bool isChanged)
        {
            if (isChanged)
            {
                this.Text = _caption + "*";
            }
            else
            {
                this.Text = _caption;
            }
        }

        #endregion //Private Methods

    }
}
